#include "uv.hpp"
#include "system.hpp"
#include "apm32f0xx_gpio.h"

static GPIO_PIN_T uv_pin = GPIO_PIN_3;
static GPIO_T *uv_port = GPIOB;
bool _UV::init(void){
    GPIO_Config_T gpio_configuration;
    System_setPeripheralClockEnable(CLK_GPIOB,TRUE);
    gpio_configuration.pin = GPIO_PIN_3;
    gpio_configuration.mode = GPIO_MODE_OUT;
    gpio_configuration.outtype = GPIO_OUT_TYPE_PP;
    gpio_configuration.speed = GPIO_SPEED_50MHz;
	gpio_configuration.pupd = GPIO_PUPD_PU;
    GPIO_Config(GPIOB,&gpio_configuration);  

    return true;
}

bool _UV::deinit(void){

    return true;
}

void _UV::set(bool status){
    if( status == true){
        GPIO_SetBit(GPIOB,GPIO_PIN_3);
    }else{
        GPIO_ClearBit(GPIOB,GPIO_PIN_3);
    }
    
}

bool _UV::get(){
    if( GPIO_ReadInputBit(GPIOB,GPIO_PIN_3) ) return true;
    else return false;
}

static UV * _uv = nullptr;
UV *UV::getInstance(){
    if( _uv == nullptr){
        _uv = new _UV();
        _uv->init();
    }
    return _uv;
}
